package com.mhc.suzuki.service;

import com.mhc.fiat.api.message.ProcessMessage;
import com.mhc.haval.security.model.User;
import com.mhc.suzuki.bo.SubmitTaskBO;
import com.mhc.suzuki.exception.SuzukiCommonException;
import com.mhc.suzuki.vo.OrderAuditTaskVO;

import java.util.List;
import java.util.Map;

/**
 * Created by HMJ on 2017/8/24.
 */
public interface OrderAuditTaskService {

    /**
     * 根据订单号,业务类型,审批结果查询订单审核历史
     * @param orderNO 订单号
     * @param bizType 业务类型:贷款申请,打款申请,资料修改,通融申请
     * @param approvalResult 审批结果,1通过,2不通过,3附条件通过（需要补全资料）
     * @param applyId 业务申请Id
     * @return
     */
    List<OrderAuditTaskVO> queryOrderAuditTaskList(String orderNO, Integer bizType, Integer approvalResult, Long applyId,String roleCode);

    /**
     * 根据订单号,业务类型,审批结果查询订单审核历史
     * @param orderNO 订单号
     * @param bizType 业务类型:贷款申请,打款申请,资料修改,通融申请
     * @param approvalResult 审批结果,1通过,2不通过,3附条件通过（需要补全资料）
     * @return
     */
    List<OrderAuditTaskVO> queryOrderAuditTaskList(String orderNO, Integer bizType, Integer approvalResult);

    /**
     * 根据订单号,业务类型查询订单审核历史
     * @param orderNO 订单号
     * @param bizType 业务类型:贷款申请,打款申请,资料修改,通融申请
     * @return
     */
    List<OrderAuditTaskVO> queryOrderAuditTaskList(String orderNO, Integer bizType);

    /**
     * 生成待办任务
     * @param processMessage
     * @param msg
     * @throws Exception
     */
    void createAuditTask(ProcessMessage processMessage, Map<String, Object> msg) throws Exception;

    /**
     * 查询订单是否存在相同的申请
     * @param submitTaskBO
     * @param logedUser
     * @param applyStatus
     * @return
     * @throws SuzukiCommonException
     */
    Boolean closedTask(SubmitTaskBO submitTaskBO, User logedUser,int applyStatus) throws SuzukiCommonException;

}
